package com.cosmoplat.gfqd;

import com.cosmoplat.gfqd.config.BootStrapConfig;
import com.cosmoplat.gfqd.constants.Constants;
import com.cosmoplat.gfqd.processor.*;
import com.cosmoplat.gfqd.utils.CloneGitLab;
import com.cosmoplat.gfqd.utils.MavenExecutor;
import com.cosmoplat.gfqd.utils.PushGitLab;

import java.io.File;

import static com.cosmoplat.gfqd.config.ConfigLoader.loadConfig;

public class Application {

    public static void main(String[] args) {

        BootStrapConfig config = loadConfig("bootstrap.yml");

        String branch = args.length > 0 ? args[0] : "dev"; // 通过命令行参数指定分支，默认为 main
        // 1.从git上按group克隆项目
        CloneGitLab.clone(config,branch);
        //2.创建archetype.properties到clone的项目中
        CreateArchetypePropertiesFile.create(config);
        // 3.创建pom.xml文件到"gitclone的项目"中
        CreatePomXMLFile.create(config);
        // 4.执行maven命令，生成"模板骨架项目"
        MavenExecutor.execute(new File(Constants.GITLAB_PROJECTS), "mvn clean archetype:create-from-project");
        // 5.批量调整"模板骨架项目"中bootstrap.yaml的参数
        BatchUpdateBootstrapYmlFile.update();
        // 7.批量调整"模板骨架项目"中pom.xml主函数的参数
        BatchUpdatePomXmlFile.update(config);
        // 8.创建gitignore到"模板骨架项目"中
        BatchCreateGitIgnore.create();
        // 9.基于调整后的pom文件，执行maven命令，install到本地
        MavenExecutor.execute(new File(Constants.PROJECTS_GENERATED_SOURCES_DIRECTORY), "mvn clean install");
        // 10.生成新项目到本地
        CreateNewProject.create(config);
        //11.push到远端,这个方法慎用！
        PushGitLab.push(config);
    }
}